package busterminal.persistence.memory;

import busterminal.entity.BusModel;
import busterminal.persistence.BusModelDAO;
import java.util.HashMap;
import java.util.Map;

/**
 * Реализация интерфейса Data Access Object для модели автобуса
 */
class MemoryBusModelDAO extends AbstractMemoryDAO<BusModel> implements BusModelDAO {

    /**
     * Коллекция, содержащая информацию о всех моделях автобусов
     */
    private static Map<Integer, BusModel> dataSource = new HashMap<Integer, BusModel>();
    /**
     * Идентификатор модели автобуса
     */
    private static int counter = 1;

    /**
     * Конструктор по умолчанию
     */
    public MemoryBusModelDAO() {
    }

    /**
     * Получить коллекцию, содержащую информацию о всех моделях автобусов
     * @return коллекция
     */
    @Override
    protected Map getDataSource() {
        return dataSource;
    }

    /**
     * Получить идентификатор модели автобуса и увеличить его
     * @return идентификатор
     */
    @Override
    protected Integer getAndIncreaseCounter() {
        return counter++;
    }

    /**
     * Найти модель автобуса в хранилище по названию модели
     * @param modelName название модели автобуса
     * @return модель автобуса
     */
    @Override
    public BusModel findByModelName(String modelName) {
        for (BusModel busModel : dataSource.values()) {
            if (busModel.getModelName().equals(modelName)) {
                return busModel;
            }
        }
        return null;
    }
}
